<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>

    createPromise("异步1").then(res1=>{
        console.log(res1)
        return createPromise("异步2")
    }).then(res2=>{
        console.log(res2)
        return createPromise("异步3")
    }).then(res3=>{
        console.log(res3)
    })

    // then的回调函数没有设置返回值时：then的返回值等同于原promise实例

    // then的回调函数有设置返回值时：
    //     返回非promise实例时：then的返回值为一个新的成功状态的promise实例，成功时的数据为返回的非promise实例数据
    //     返回一个promise实例时：then的返回值就是这个promise实例

    // then的链式调用：后一个then处理的是前一个then的回调函数的返回的promise实例


    function createPromise(url){
        return new Promise((resolve, reject)=>{
            setTimeout(()=>{
                resolve(url + "成功了");
            }, Math.random() * 500)
            setTimeout(()=>{
                reject(url + "失败了");
            }, Math.random() * 1000)
        })
    }
    
</script>
</html>